When disposing a GdkDrawingContext we should unset the association
between the instance and the Cairo context; this avoids stale pointers
in case a reference that has acquired on the Cairo context survives the
lifetime of the GdkDrawingContext.
{
GdkDrawingContext *self = GDK_DRAWING_CONTEXT (gobject);
+ /* Unset the drawing context, in case somebody is holding
+ * onto the Cairo context
+ */
+ if (self->cr != NULL)
+ gdk_cairo_set_drawing_context (self->cr, NULL);
+
g_clear_object (&self->window);
g_clear_pointer (&self->clip, cairo_region_destroy);
g_clear_pointer (&self->cr, cairo_destroy);